/**
 * 数据库初始化脚本
 * 假设用户表已存在，仅进行必要的默认管理员账号检查
 */

const db = require('../config/db');

/**
 * 初始化数据库
 * 检查默认管理员账号是否存在，不存在则创建
 */
async function initDatabase() {
  try {
    // 检查表是否存在（不创建表，只检查）
    const [tables] = await db.execute(
      "SHOW TABLES LIKE 'users'"
    );
    
    if (tables.length === 0) {
      console.error('错误：数据库中不存在users表，请先创建用户表');
      return;
    }
    
    // 检查是否存在默认管理员账号
    const [rows] = await db.execute('SELECT * FROM users WHERE username = ?', ['admin']);
    
    // 如果不存在，则创建默认管理员账号
    if (rows.length === 0) {
      const bcrypt = require('bcryptjs');
      const hashedPassword = bcrypt.hashSync('admin123', 10);
      
      try {
        await db.execute(
          'INSERT INTO users (username, password_hash, role) VALUES (?, ?, ?)',
          ['admin', hashedPassword, 'admin']
        );
        console.log('已创建默认管理员账号');
      } catch (insertError) {
        // 捕获可能的字段不匹配错误
        console.warn('创建默认管理员账号时出错，可能是表结构与预期不同:', insertError.message);
        console.info('数据库初始化完成，但未创建默认管理员账号');
      }
    } else {
      console.log('默认管理员账号已存在');
    }
    
    console.log('数据库初始化完成');
  } catch (error) {
    console.error('数据库初始化失败:', error);
  }
}

module.exports = initDatabase;